<?php

/**
 * Класс RL_Storage -- хранит данные
 * 
 * На входе схема данных, схема хранения данных, правила преобразования
 * @package RL
 * @author Lucky <lucky@jetstyle.ru> 
 * @version $Id: Storage.php 62 2007-09-05 08:27:21Z lucky $
 */
class RL_Storage
{

	/**
	 * type_map отображение между типами данных
	 * 
	 * @var mixed
	 * @access public
	 */
	public $type_map = array();

	//!a manipulator
	/**
	 * find найти по крирерию
	 * 
	 * @param mixed $criteria <{}>
	 * @access public
	 * @return void
	 */
	public function find($criteria) 
	{
	}

	public function save($obj) 
	{
	}

	public function delete($obj) 
	{
	}

}

require_once dirname(__FILE__).'/Schema.php';

$sch = new RL_Schema();


// базовые типы
$TString           = $sch->factory('String');

$TTitle            = $sch->factory('String', 'Title');
$TTitle->length    = 255;

$TLogin            = $sch->factory('String', 'Login');
$TLogin->length    = 20;
$TLogin->default   = 'anonymous';

$TPassword         = $sch->factory('String', 'Password');
$TPassword->length = 10;

$sch->store($TString);
$sch->store($TTitle);
$sch->store($TLogin);

// тип Юзер
$TUser = $sch->factory('Object', 'User'); 
$TUser->addProperty('login',		$sch->find('Login'));
$TUser->addProperty('password',	$sch->find('Password'));
$TUser->addProperty('title',		$sch->find('Title'));
$sch->store($TUser);

$o = new StdClass();
$o->a['type'] = $TUser;

$st = new RL_Storage();
$st->host_schema = $sch;
$st->storage_schema = $sch;

//print_r($sch);
